iT邦幫忙

2022 iThome 鐵人賽

DAY 11
1
AI & Data

先別急著學 Python | The Secret to Success in Python系列 第 11

Ɖ11-榫卯/ 一些在 Python 簡單的,在 Excel 會很複雜的事情

  • 分享至 

  • xImage
  •  

一些在 Python 簡單的,在 Excel 會很複雜的事情

結束上次提及的加權平均數,這次的目的是展示一些常見的 Excel 任務,以及你如何在 pandas 中執行類似的任務。雖然說其中一些例子有些簡單且微不足道,但我認為展示簡單的和更複雜的函數很重要,你可以在其他地方找到。作為額外的內容,我將做一些 Vlookup 來做模糊字符串匹配,以顯示這個過程的一個小轉折,並展示 pandas 如何利用完整的python系統做一些 Python 簡單的,在Excel中會很複雜的事情。

新資料集的使用 New Data Set

在開始之前我們先引入新的資料集, 並且導入接下來會用上的 Pandas 和 Numpy Library。

import pandas as pd
import numpy as np
df = pd.read_excel("data.xlsx")
df.head()

https://ithelp.ithome.com.tw/upload/images/20220925/20140740k8JPSkMNab.png

簡單加法總和 Easy addition

小試身手一下,我們先利用基本的加法來簡單做統計,我想添加一個總列來顯示 1月、2月和3月的總銷售額。這在 Excel 和 Pandas 中都是很簡單的。在 Excel 中,能在列中添加了公式 sum(G2:I2),我們也可以在 Pandas 做到新增欄目,這個方法非常的簡單。

df["total"] = df["Jan"] + df["Feb"] + df["Mar"]
df.head()

https://ithelp.ithome.com.tw/upload/images/20220925/201407405KGz5RvOY1.png

此外,現在我們想增加一個按月計算的總數和總計。這就是 Pandas 和 Excel 的分歧之處。在Excel中為每個月的單元格添加總數是非常簡單的。但因為 Pandas 需要維護整個 DataFrame 的完整性,所以還需要增加幾個步驟。

sum_row = df[["Jan","Feb","Mar","total"]].sum()
df_sum  = pd.DataFrame(data=sum_row).T  #transpose 
df_sum

https://ithelp.ithome.com.tw/upload/images/20220925/20140740BqfETLklm3.png

Excel

同樣的功能我們應用在 Excel 上反而顯得容易的多,我們只需要利用 Sum(x:y) 的方式,就能夠快速拉出我們想要加總的內容,甚至說我們並不需要記住多種不同的公式。

https://ithelp.ithome.com.tw/upload/images/20220925/20140740LKhU86Ycm3.png

Vlookup 查詢

Vlookup 是我們很常使用的 Excel 功能,他幫我們達成快速匹配數值,當我們需要找到 A 所對應的 B 值時,這項功能就會非常好用。舉例來說我們有一雙鞋,我們可以利用 Vlookup 匹配他所擁有的價格,根據官方中 Vlookup 的解釋如下。

  • VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])
  1. Lookup_value 為需要在數據表第一列中進行查找的數值。
  2. Table_array 為需要在其中查找數據的數據表。使用對區域或區域名稱的引用。
  3. col_index_num 為 table_array 中查找數據的數據列序號。
  4. Range_lookup 為一邏輯值,指明函數 VLOOKUP 查找時是精確匹配,還是近似匹配。如果為FALSE或0,則返回精確匹配,如果找不到,則返回錯誤值 #N/A。如果 range_lookup 為TRUE或1,將查找近似匹配值。

根據例子中,我希望可以查詢每個美國州的縮寫,我會利用 =VLOOKUP(E2,$B$19:$C$31,2,FALSE) 方式來寫,我們仔細分解結構來說,E2(Lookup_value)指的就是我想要查的目標,而 B19:C31(Table)則是我要尋找的對應表,位於本圖片中的左下角,而其中的 2(col_index_num) 表示我要找第二個值,Texas 對應的就是縮寫 TX,最後簡單設定邏輯值 False(Range_lookup)

https://ithelp.ithome.com.tw/upload/images/20220925/201407403uK41roCBu.png

根據例子中,Vlookup 可以快速的幫我完成 Table 搜尋目標,非常快速的對應上缺值。
https://ithelp.ithome.com.tw/upload/images/20220925/20140740erFMW7bqdb.png

Vlookup 的 Python 寫法 FuzzyWuzzy

FuzzyWuzzy 的篇幅不少,我打算放到下個章節來描述,但是回應這個主題,一些在 Python 簡單的,在 Excel 會很複雜的事情就是這個樣子,有許多內容在兩邊都能夠達成,但是其中一種工具會更有效率地達成。

謝謝大家的觀看,但歷史的痕跡會持續下去

今年沒組團,每一筆一字矢志不渝的獻身精神都是為歷史書寫下新頁,有空的話可以走走逛逛我們去年寫的文章。


Hi'Jerry均

Jerry 據說是個僅佔人口的 4% 人口的 INFP 理想主義者,總是從最壞的生活中尋找最好的一面,想方設法讓世界更好,內心的火焰和熱情可以光芒四射,畢業後把人生暫停了半年,緩下腳步的同時找了份跨領域工作。偶而散步、愛跟小動物玩耍。曾立過很多志,最近是希望當一個有夢想的人。

謝謝你的時間「訂閱,追蹤和留言」都是陪伴我走過 30 天鐵人賽的精神糧食。


上一篇
Ɖ10-榫卯/ 利用分組 Python 方式計算加權平均數
下一篇
Ɖ12-榫卯/ 利用 Python 完成 Vlookup !超級好用的 FuzzyWuzzy
系列文
先別急著學 Python | The Secret to Success in Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言